/*
 * Copyright 2020 eBlocker Open Source UG (haftungsbeschraenkt)
 *
 * Licensed under the EUPL, Version 1.2 or - as soon they will be
 * approved by the European Commission - subsequent versions of the EUPL
 * (the "License"); You may not use this work except in compliance with
 * the License. You may obtain a copy of the License at:
 *
 *   https://joinup.ec.europa.eu/page/eupl-text-11-12
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
export default {
    templateUrl: 'app/components/card.component.html',
    controller: CardController,
    controllerAs: 'vm',
    bindings: {
        icon: '@',
        cardTitle: '@',
        collapsedTitle: '@',
        tooltip: '@',
        status: '@',
        hideTopDivider: '<',
        hideBottomDivider: '<',
        noPadding: '<',
        cardId: '@'
    },
    transclude: {
        content: '?ebCardContent',
        actions: '?ebCardActions'
    }
};

function CardController($transclude, CardService) {
    'ngInject';
    'use strict';

    const vm = this;

    vm.$onInit = function() {
        vm.isExpanded = CardService.isExpanded(vm.cardId);
        if (angular.isDefined(vm.collapsedTitle)) {
            vm.hasCollapsedTitle = true;
        }
    };

    vm.$doCheck = function() {
        vm.isExpanded = CardService.isExpanded(vm.cardId);
    };

    vm.toggleCollapse = function() {
        vm.isExpanded = !vm.isExpanded;
        CardService.isExpanded(vm.cardId, vm.isExpanded);
    };

    vm.hasContent = function() {
        return $transclude.isSlotFilled('content');
    };

    vm.hasActions = function() {
        return $transclude.isSlotFilled('actions');
    };
}
